home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 08 System Utilities / CPALLG.BIN (.txt) < prev    next >
Commodore BASIC  |  2019-04-13  |  5KB  |  137 lines

  1. 1 REM SAVE"0:COPYALL 64 GLINK",8
  2. 2 REM ** JIM BUTTERFIELD'S C64 COPY-ALL
  3. 3 REM ** MODIFIED FOR USE WITH THE GLINK IEEE-488 INTERFACE
  4. 4 REM ** RICHARD EVERS 07-06-1987
  5. 5 :
  6. 6 REM ** ALLOWS CONCURRENT COPYING OF DATA
  7. 7 REM ** SERIAL TO IEEE-488, IEEE-488 TO SERIAL
  8. 8 REM ** SERIAL TO SERIAL OR IEEE-488 TO IEEE-488
  9. 9 REM ** VIA TRANSACTOR'S GLINK IEEE-488 INTERFACE
  10. 10 :
  11. 11 REM ** TRANSACTOR PUBLISHING INC.
  12. 12 REM ** 85 WEST WILMOT ST., #10
  13. 13 REM ** RICHMOND HILL,ONTARIO, CANADA
  14. 14 REM ** L4B-1K7 (416) 764-5273
  15. 15 :
  16. 16 PRINT "[147]  DISK COPY-ALL      JIM BUTTERFIELD"
  17. 17 PRINT "** GLINK IEEE-488 INTERFACE VERSION **"
  18. 18 PRINT " COPIES BETWEEN SERIAL AND IEEE DRIVES"
  19. 19 A$="!JIM BUTTERFIELD!": A$=A$+A$+A$: A$=A$+A$+A$+A$+A$
  20. 20 P$=""
  21. 21 DIM L2(232),L1%(232),N$(232),T%(232),T$(4)
  22. 22 DATA XXX,SEQ,PRG,USR,REL
  23. 23 FOR J=0 TO 4: READ T$(J): NEXTJ
  24. 24 :
  25. 25 REM WHEN SIZE=3956 THEN CODE BEGINS AT 6005
  26. 26 Z1=6027: REM ENTRY POINT #1
  27. 27 Z2=Z1+3: REM ENTRY POINT #2
  28. 28 Z3=Z2+3: REM ENTRY POINT #3
  29. 29 Z4=Z3+3: REM ENTRY POINT #4
  30. 30 INIT=Z4+3: REM MOVE ROM TO RAM, ETC.
  31. 31 SWAP=INIT+3: REM SWAP ROM TO RAM OR VICE-VERSA
  32. 32 FR=251: TU=252: TP=253: REM FROM, TO AND TEMP STORAGE OF DRIVE TYPE
  33. 33 :
  34. 34 INPUT"FROM UNIT  8[157][157][157]";F
  35. 35 GOSUB123: REM GET DRVNUM
  36. 36 F$=D$
  37. 37 INPUT "1) SERIAL OR 2) IEEE  2[157][157][157]";TF
  38. 38 IF TF<1 OR TF>2 THEN 37
  39. 39 :
  40. 40 INPUT"TO UNIT  8[157][157][157]";T
  41. 41 GOSUB123: REM GET DRVNUM
  42. 42 T$=D$
  43. 43 INPUT "1) SERIAL OR 2) IEEE  1[157][157][157]";TT
  44. 44 IF TT<1 OR TT>2 THEN 43
  45. 45 :
  46. 46 IF F=T AND F$=T$ AND TT=TF THEN RUN
  47. 47 :
  48. 48 POKE FR,TF-1: POKE TU,TT-1: REM DRIVE TYPE SOURCE AND DESTINATION
  49. 49 SYS(INIT): REM MOVE ROM TO RAM, ETC.
  50. 50 XX=FR: GOSUB 136: N=0: CLOSE1: CLOSE15: OPEN 15,F,15: PRINT#15,"I"+F$
  51. 51 GOSUB127: IF E THEN STOP: GOTO 50
  52. 52 Z=90: PRINT: INPUT"PATTERN  *[157][157][157]";P$
  53. 53 P$="XXX"+LEFT$(P$+"[160][160][160][160][160][160][160][160][160][160][160][160][160][160][160]",16)
  54. 54 PRINT "HOLD DOWN 'Y' OR 'N' KEY TO SELECT"
  55. 55 PRINT "PROGRAMS TO BE COPIED..."
  56. 56 OPEN 1,F,3,"$"+F$: REM OK
  57. 57 GOSUB127: IF E THEN STOP: GOTO50
  58. 58 SYS(Z1)
  59. 59 R=255: GOTO 61
  60. 60 SYS(Z2)
  61. 61 FOR J=16TO2STEP-1: IF ASC(MID$(A$,J+3))=160 THEN NEXTJ
  62. 62 N$=MID$(A$,4,J)
  63. 63 T9=ASC(A$)-128: IF T9<1 OR T9>4 GOTO75
  64. 64 L1%=ASC(MID$(A$,22))
  65. 65 L2=ASC(MID$(A$,29))+ASC(MID$(A$,30))*256
  66. 66 PRINT RIGHT$("   "+MID$(STR$(L2),2),4)" :"MID$(A$,4,16)" "T$(T9)"      "
  67. 67 P=PEEK(203) AND R
  68. 68 GET Z$: IF Z$="" AND P<064 GOTO73
  69. 69 IF Z$="Y" OR Z$="N" THEN Z=ASC(Z$): R=255: GOTO73
  70. 70 IF Z$=CHR$(13) THEN R=0: GOTO73
  71. 71 GOTO68
  72. 72 :
  73. 73 IF Z<80 THEN PRINT "[145]                     [145]": GOTO75
  74. 74 N=N+1: L2(N)=L2: N$(N)=N$: T%(N)=T9: L1%(N)=L1%
  75. 75 IF ST=0 AND N<232 GOTO60
  76. 76 XX=FR: GOSUB 136: CLOSE1: CLOSE15: PRINT " * * * * *                  "
  77. 77 IF N=0 THEN PRINT "* NO PROGRAMS *": GOTO 120
  78. 78 FOR J=1 TO N
  79. 79 L2=L2(J): T%=T%(J): IF L>L2 GOTO100
  80. 80 IF Q=0 GOTO84
  81. 81 PRINT "*** OUTPUT DISK FULL"
  82. 82 INPUT"DO YOU HAVE A NEW ONE";Z$
  83. 83 IF ASC(Z$)<>89 THEN 122
  84. 84 CLOSE15: XX=TU: GOSUB 136: REM SWAP TO DESTINATION
  85. 85 OPEN 15,T,15: INPUT"WANT TO NEW THE OUTPUT DISK  N[157][157][157]";Z$
  86. 86 IF ASC(Z$)<>89 GOTO92
  87. 87 :
  88. 88 INPUT"DISK NAME,ID";X$,Y$
  89. 89 PRINT#15,"N"+T$+":"+X$+","+Y$
  90. 90 GOSUB127: IF E THEN STOP: GOTO84
  91. 91 :
  92. 92 PRINT#15,"I"+T$: OPEN 1,T,0,"$"+T$+": !#$%&"
  93. 93 GOSUB127: IF E THEN STOP: GOTO84
  94. 94 GOSUB131: GOSUB131: Q=Q+1
  95. 95 GET#1,X$: IF X$<>"" GOTO95
  96. 96 GOSUB131
  97. 97 L=X+Y*256: PRINT "(";L;"BLOCKS FREE )"
  98. 98 XX=TU: GOSUB 136: CLOSE1: CLOSE15: GOTO79
  99. 99 :
  100. 100 XX=FR: GOSUB 136: OPEN 14,F,15: REM SOURCE CMD CHANNEL
  101. 101 XX=TU: GOSUB 136: OPEN 15,T,15: REM DEST CMD CHANNEL
  102. 102 PRINT LEFT$(N$(J)+"                    ",21);
  103. 103 XX=FR: GOSUB 136: OPEN 3,F,3,F$+":"+N$(J)+","+T$(T%)
  104. 104 INPUT#14,E,E$,E1,E2: GOSUB128: IF E THEN PRINT "** ";E$;E: GOTO117
  105. 105 :
  106. 106 XX=TU: GOSUB 136: REM DESTINATION
  107. 107 IF T%=4 THEN OPEN 4,T,4,T$+":"+N$(J)+",L,"+CHR$(L1%(J)): GOTO111
  108. 108 :
  109. 109 OPEN 4,T,4,T$+":"+N$(J)+","+T$(T%)+",W"
  110. 110 :
  111. 111 L=L-L2: GOSUB127: IF E THEN PRINT "*** ";E$;E: GOTO117
  112. 112 IF T%=4 THEN SYS(Z4): GOTO114: REM RELATIVE COPY
  113. 113 SYS(Z3)
  114. 114 XX=TU: GOSUB 136: REM SET DESTINATION AGAIN
  115. 115 N$(J)="": GOSUB127: IF E THEN PRINT "**** ";E$;E: GOTO117
  116. 116 PRINT "[145]"
  117. 117 XX=FR: GOSUB 136: CLOSE3: CLOSE14: REM SOURCE
  118. 118 XX=TU: GOSUB 136: CLOSE4: CLOSE15: REM DESTINATION
  119. 119 NEXTJ
  120. 120 X=FRE(0): INPUT"ANOTHER INPUT DISK READY";Z$
  121. 121 IF ASC(Z$)=89 GOTO50
  122. 122 POKE 1,55: END
  123. 123 INPUT"DRIVE  0[157][157][157]";D
  124. 124 IF D*D<>D GOTO123
  125. 125 D$=CHR$(D+48): RETURN
  126. 126 :
  127. 127 INPUT#15,E,E$,E1,E2
  128. 128 IF E=0 THEN E=(ST AND 191): E$="*ST*"
  129. 129 RETURN
  130. 130 :
  131. 131 GET#1,X$,X$,X$
  132. 132 X=ASC(X$+CHR$(0))
  133. 133 GET#1,X$: Y=ASC(X$+CHR$(0))
  134. 134 RETURN
  135. 135 :
  136. 136 POKE TP,PEEK(XX): SYS(SWAP): RETURN: REM FLIP TO SOURCE/DESTINATION DRIVE
  137.